package dao

import (
	"time"
)

// 这是 Comment 的全局公开dao对象，被service层调用!
var CommentDao = commentDao{}

// 评论表
// 这是 comment表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Comment struct {
	Id           int32     `json:"id" form:"id" v:"id" db:"id"`
	ValueId      int32     `json:"value_id" form:"value_id" v:"value_id" db:"value_id"`                     // 如果type=0，则是商品评论；如果是type=1，则是专题评论。
	Type         int8      `json:"type" form:"type" v:"type" db:"type"`                                     // 评论类型，如果type=0，则是商品评论；如果是type=1，则是专题评论；
	Content      string    `json:"content" form:"content" v:"content" db:"content"`                         // 评论内容
	AdminContent string    `json:"admin_content" form:"admin_content" v:"admin_content" db:"admin_content"` // 管理员回复内容
	UserId       int32     `json:"user_id" form:"user_id" v:"user_id" db:"user_id"`                         // 用户表的用户ID
	HasPicture   int8      `json:"has_picture" form:"has_picture" v:"has_picture" db:"has_picture"`         // 是否含有图片
	PicUrls      string    `json:"pic_urls" form:"pic_urls" v:"pic_urls" db:"pic_urls"`                     // 图片地址列表，采用JSON数组格式
	Star         int16     `json:"star" form:"star" v:"star" db:"star"`                                     // 评分， 1-5
	AddTime      time.Time `json:"add_time" form:"add_time" v:"add_time" db:"add_time"`                     // 创建时间
	UpdateTime   time.Time `json:"update_time" form:"update_time" v:"update_time" db:"update_time"`         // 更新时间
	Deleted      int8      `json:"deleted" form:"deleted" v:"deleted" db:"deleted" gm:"deleted"`            // 逻辑删除

}

// 注意:这是 Comment 的私有dao对象，只能在dao层内使用!
type commentDao struct {
	InsertTemplate func(arg Comment) (int64, error)         //插入一条记录
	UpdateTemplate func(arg Comment) (int64, error)         //更新一条记录
	DeleteTemplate func(id int64) (int64, error)            `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Comment, error)          `args:"id"` //根据传入的主键获取一条记录
	List           func(arg CommentList) ([]Comment, error) //模糊分页查询
}

/*
// 这是 comment 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type CommentPostman struct {
id
value_id
type
content
admin_content
user_id
has_picture
pic_urls
star
add_time
update_time
deleted

}*/

// 这是 comment 表的批量请求参数
type CommentReq struct {
	List []Comment `json:"list" form:"list"`
}

// 这是 commentDao.List()方法的请求参数
type CommentList struct {
	Page
}
